package com.smedi.ismedi.inmail.core.application.query.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class SafetyCheckProjectOverviewVo implements Serializable {
    /**
     * 名字
     */
    private String name;

    /**
     * 全称
     */
    private String fullName;

    /**
     * 主体院名字
     */
    private String organizationName;

    /**
     * 主体院全称
     */
    private String organizationFullName;

    /**
     * 检查总数
     */
    private BigDecimal totalNum;

    /**
     * 项目部检查数
     */
    private BigDecimal checkProjectNum;

    /**
     * 项目部上报隐患数
     */
    private BigDecimal hiddenDangerProjectNum;

    /**
     * 项目部隐患整改率
     */
    private BigDecimal rectificationProjectRate;

    /**
     * 项目部整改隐患数
     */
    private BigDecimal hiddenDangerRectificationProjectNum;

    /**
     * 主体院检查数
     */
    private BigDecimal checkMajorNum;

    /**
     * 主体院上报隐患数
     */
    private BigDecimal hiddenDangerMajorNum;

    /**
     * 主体院整改隐患数
     */
    private BigDecimal hiddenDangerRectificationMajorNum;

    /**
     * 主体院隐患整改率
     */
    private BigDecimal rectificationMajorRate;


    /**
     * 总院检查数
     */
    private BigDecimal checkLeaderNum;

    /**
     * 总院上报隐患数
     */
    private BigDecimal hiddenDangerLeaderNum;

    /**
     * 总院隐患整改率
     */
    private BigDecimal rectificationLeaderRate;

    /**
     * 总院整改隐患数
     */
    private BigDecimal hiddenDangerRectificationLeaderNum;

    /**
     * 上报隐患数
     */
    private BigDecimal hiddenDangerNum;

    /**
     * 整改隐患数
     */
    private BigDecimal hiddenDangerRectificationNum;

    /**
     * 隐患整改率
     */
    private BigDecimal RectificationRate;

    /**
     * 组织排序数
     */
    private Integer organizationDisplayOrder;

    /**
     * 项目排序数
     */
    private Integer projectDisplayOrder;

    public BigDecimal getRectificationRate() {
        if (this.hiddenDangerNum.compareTo(new BigDecimal("0")) <= 0) {
            return new BigDecimal("100");
        }
        return this.hiddenDangerRectificationNum.multiply(new BigDecimal("100")).divide(this.hiddenDangerNum, 1, RoundingMode.HALF_UP);
    }

    public BigDecimal getRectificationProjectRate() {
        if (this.hiddenDangerProjectNum.compareTo(new BigDecimal("0")) <= 0) {
            return new BigDecimal("100");
        }
        return this.hiddenDangerRectificationProjectNum.multiply(new BigDecimal("100")).divide(this.hiddenDangerProjectNum, 1, RoundingMode.HALF_UP);
    }

    public BigDecimal getRectificationMajorRate() {
        if (this.hiddenDangerMajorNum.compareTo(new BigDecimal("0")) <= 0) {
            return new BigDecimal("100");
        }
        return this.hiddenDangerRectificationMajorNum.multiply(new BigDecimal("100")).divide(this.hiddenDangerMajorNum, 1, RoundingMode.HALF_UP);
    }

    public BigDecimal getRectificationLeaderRate() {
        if (this.hiddenDangerLeaderNum.compareTo(new BigDecimal("0")) <= 0) {
            return new BigDecimal("100");
        }
        return this.hiddenDangerRectificationLeaderNum.multiply(new BigDecimal("100")).divide(this.hiddenDangerLeaderNum, 1, RoundingMode.HALF_UP);
    }
}
